﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DADOS.auxiliares;
using DADOS.esf;
using DADOS.usuario;

namespace PROAD.atendimento.Forms
{
    public partial class FormPaciente : System.Web.UI.Page
    {
        metEndereco metEnd = new metEndereco();
        metPaciente metPac = new metPaciente();
        metEsf metEquipe = new metEsf();

        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                carregarDdl();

                if(Request.QueryString["codPac"] != null)
                {
                    MontarTela(Convert.ToInt32(Request.QueryString["codPac"]));
                }
            }
        }

        private void carregarDdl()
        {
            ddlUf.DataSource = metEnd.ListaUF();
            ddlUf.DataBind();
            ddlUf.Items.Insert(0, new ListItem("Selecione", "0"));
        }

        private void carregarDdlEdit(int codUf)
        {
            ddlMunicipio.DataSource = metEnd.ListaCidade(codUf);
            ddlMunicipio.DataBind();
            CarregarDdlUS(Convert.ToInt32(codUf));
        }


        protected void ddlUf_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddlMunicipio.DataSource = metEnd.ListaCidade(Convert.ToInt32(ddlUf.SelectedValue));
            ddlMunicipio.DataBind();

            if (ddlUf.SelectedValue != "0")
            {
                CarregarDdlUS(Convert.ToInt32(ddlUf.SelectedValue));
            }
            else
            {
                ddlUS.SelectedValue = "0";
                ddlUS.Enabled = false;
                ddlEs.SelectedValue = "0";
                ddlEs.Enabled = false;
            }
        }

        protected bool ValidaForm()
        {

            if(string.IsNullOrEmpty(txtNome.Text))
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Nome obrigatório.";
                txtNome.Focus();
                ModalPopupMsn.Show();
                return false;
            }
            if (string.IsNullOrEmpty(txtCpf.Text))
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Cartão SUS obrigatório.";
                txtCpf.Focus();
                ModalPopupMsn.Show();
                return false;
            }else
            {
                var objPaciente = metPac.getUsuarioByCpf(txtCpf.Text);
                if (objPaciente != null)
                {
                    txtTituloMsn.Text = "ALERTA";
                    txtTextoMsn.Text = "Cartão SUS já cadastrado como paciente.";
                    txtCpf.Focus();
                    ModalPopupMsn.Show();
                    return false;
                }
            }
            if (ddlSexo.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Sexo obrigatório.";
                ddlSexo.Focus();
                ModalPopupMsn.Show();
                return false;
            }

            if (string.IsNullOrEmpty(txtEndereco.Text))
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Endereço obrigatório.";
                txtEndereco.Focus();
                ModalPopupMsn.Show();
                return false;
            }

            if (ddlUf.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "UF obrigatório.";
                ddlUf.Focus();
                ModalPopupMsn.Show();
                return false;
            }

            if (string.IsNullOrEmpty(txtCep.Text) || txtCep.Text == "__.___-___")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "CEP obrigatório.";
                txtCep.Focus();
                ModalPopupMsn.Show();
                return false;
            }

            if (string.IsNullOrEmpty(txtDataNasc.Text) || txtDataNasc.Text == "__/__/____")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Data de Nascimento obrigatório.";
                txtDataNasc.Focus();
                ModalPopupMsn.Show();
                return false;
            }
           
            if (ddlUS.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "US obrigatório.";
                ddlUS.Focus();
                ModalPopupMsn.Show();
                return false;
            }

            if (ddlEs.SelectedValue == "0")
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "ES obrigatório.";
                ddlEs.Focus();
                ModalPopupMsn.Show();
                return false;
            }
           
            if (string.IsNullOrEmpty(txtTelefone.Text))
            {
                txtTituloMsn.Text = "ALERTA";
                txtTextoMsn.Text = "Telefone obrigatório.";
                txtTelefone.Focus();
                ModalPopupMsn.Show();
                return false;
            }
            

            return true;
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            var objUser = new DADOS.TB_USUARIO();
            if (ValidaForm())
            {
                objUser.NO_NOME = txtNome.Text;
                objUser.DS_CPF = txtCpf.Text;
                objUser.DS_ENDERECO = txtEndereco.Text;
                objUser.DS_CEP = txtCep.Text;
                objUser.DS_TELEFONE = txtTelefone.Text;
                objUser.CO_CIDADE = Convert.ToInt32(ddlMunicipio.SelectedValue);
                objUser.DT_NASCIMENTO = Convert.ToDateTime(txtDataNasc.Text);
                objUser.NR_SEXO = Convert.ToInt32(ddlSexo.SelectedValue);
                objUser.NR_STATUS = Convert.ToInt32(ddlSituacao.SelectedValue);
                objUser.DT_ATUALIZACAO = DateTime.Now;
                objUser.CO_PROFISSIONAL = Convert.ToInt32(Session["CO_PROFISSIONAL"]);
                objUser.CO_ES = Convert.ToInt32(ddlEs.SelectedValue);
           
                try
                {
                    metPac.Incluir(objUser);
                    txtTituloMsn.Text = "ALERTA";
                    txtTextoMsn.Text = "Paciente incluido com sucesso.";
                    ModalPopupMsn.Show();

                }
                catch (Exception)
                {
                    txtTituloMsn.Text = "ALERTA";
                    txtTextoMsn.Text = "Paciente não incluido, tente mais tarde.";
                    ModalPopupMsn.Show();
                }
            }

        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            txtNome.Text = string.Empty;
            txtCpf.Text = string.Empty;
            txtCep.Text = string.Empty;
            txtDataNasc.Text = string.Empty;
            txtEndereco.Text = string.Empty;
            txtTelefone.Text = string.Empty;
            ddlSexo.SelectedValue = "0";
            ddlMunicipio.Text = "0";
            ddlUf.SelectedValue = "0";
            //ddlMicroArea.SelectedValue = "0";
        }

        protected void MontarTela(int codPaciente)
        {
            var objUser = metPac.getUsuarioByCod(codPaciente);

            if (objUser != null)
            {
                btnSalvar.Visible = false;
                btnEditar.Visible = true;

                txtNome.Text = objUser.NO_NOME;
                txtCpf.Text = objUser.DS_CPF;
                txtCep.Text = objUser.DS_CEP;
                txtDataNasc.Text = objUser.DT_NASCIMENTO.ToShortDateString();
                txtEndereco.Text = objUser.DS_ENDERECO;
                txtTelefone.Text = objUser.DS_TELEFONE;
                ddlSexo.SelectedValue = objUser.NR_SEXO.ToString();
                ddlUf.SelectedValue = objUser.TB_CIDADE.CO_UF.ToString();
                int uf = 0;
                if(objUser.TB_CIDADE.CO_UF != null) uf = (int)objUser.TB_CIDADE.CO_UF;
                carregarDdlEdit(uf);
                ddlMunicipio.SelectedValue = objUser.CO_CIDADE.ToString();
                ddlUS.SelectedValue = objUser.TB_ES.CO_US.ToString();
                CarregarDdlEs(objUser.TB_ES.CO_US);
                ddlEs.SelectedValue = objUser.CO_ES.ToString();
                ddlSituacao.SelectedValue = objUser.NR_STATUS.ToString();
            }

        }

        protected void btnEditar_Click(object sender, EventArgs e)
        {
            var objUser = metPac.getUsuarioByCod(Convert.ToInt32(Request.QueryString["codPac"]));

            if (ValidaForm())
            {
                objUser.NO_NOME = txtNome.Text;
                objUser.DS_CPF = txtCpf.Text;
                objUser.DS_ENDERECO = txtEndereco.Text;
                objUser.DS_CEP = txtCep.Text;
                objUser.DS_TELEFONE = txtTelefone.Text;
                objUser.CO_CIDADE = Convert.ToInt32(ddlMunicipio.SelectedValue);
                objUser.DT_NASCIMENTO = Convert.ToDateTime(txtDataNasc.Text);
                objUser.NR_SEXO = Convert.ToInt32(ddlSexo.SelectedValue);
                objUser.NR_STATUS = Convert.ToInt32(ddlSituacao.SelectedValue);
                objUser.DT_ATUALIZACAO = DateTime.Now;
                objUser.CO_PROFISSIONAL = Convert.ToInt32(Session["CO_PROFISSIONAL"]);
                objUser.CO_ES = Convert.ToInt32(ddlEs.SelectedValue);
                try
                {
                    metPac.Alterar(objUser);
                    txtTituloMsn.Text = "ALERTA";
                    txtTextoMsn.Text = "Paciente alterado com sucesso.";
                    ModalPopupMsn.Show();

                }
                catch (Exception)
                {
                    txtTituloMsn.Text = "ALERTA";
                    txtTextoMsn.Text = "Paciente não alterado, tente mais tarde.";
                    ModalPopupMsn.Show();
                }
            }
           
           
        }
        protected void CarregarDdlUS(int intCodUf)
        {
            //US
            ddlUS.Enabled = true;
            ddlUS.DataSource = metEquipe.ListaUsUf(intCodUf);
            ddlUS.DataBind();
            ddlUS.Items.Insert(0, new ListItem("Selecione US", "0"));

        }

        protected void CarregarDdlEs(int intCodES)
        {
            //US
            ddlEs.Enabled = true;
            ddlEs.DataSource = metEquipe.ListaEsUsGeral(intCodES);
            ddlEs.DataBind();
            ddlEs.Items.Insert(0, new ListItem("Selecione ES", "0"));

        }

        protected void ddlUS_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlUS.SelectedValue != "0")
            {
                CarregarDdlEs(Convert.ToInt32(ddlUS.SelectedValue));
            }
            else
            {
                ddlEs.SelectedValue = "0";
                ddlEs.Enabled = false;
            }
           
        }

        //protected void btnRedirecionar_Click(object sender, EventArgs e)
        //{
        //    Response.Redirect("/atendimento/Consulta/ConsultaPacientes.aspx");
        //}
    }
}